package fr.afcepf.atod18.commande.web;

import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import fr.afcepf.atod18.client.entity.Client;
import fr.afcepf.atod18.commande.entity.Commande;
import fr.afcepf.atod18.commande.entity.EtatCommande;
import fr.afcepf.atod18.utilitaires.entity.InfoSession;
import fr.afcepf.atod18.utilitaires.service.IServiceFacade;

@ManagedBean(name = "commandeRestoMB")
@SessionScoped
public class CommandeRestoMB {
    @ManagedProperty(value = "#{serviceFacade}")
    IServiceFacade serviceFacade;

    private InfoSession infoSession;
//    private Commande commande;
    private List<Commande> listeCommandes;
    private Commande selectedCmd;
    
//    private boolean creation;

    public CommandeRestoMB() {
        super();
        System.out.println("construction MB");
    }

    @PostConstruct
    public void chargeCommandeResto() {
    	listeCommandes = null;
//    	System.out.println("Entree dans pages Suivi des commandes d'un restaurant");
//        commande = new Commande();
//        GregorianCalendar calendar1 = new GregorianCalendar();
//        calendar1.setTime(new Date());
//        commande.setDateCommandeCalendar(calendar1);
//        GregorianCalendar calendar2 = new GregorianCalendar();
//        calendar2.setTime(new Date());
//        commande.setDateDemandeLivraison(calendar2);
//        System.out.println("postconstruct de CommandeMB");
    }

    
    public String doPreparationResto(){
        
        return null;
        
    }
    
    public String doLivraisonResto(){
        
        return null;
        
    }

    public void chargerClientResto() {
//        System.out.println("login=" + infoSession.getLogin());
//        Client client = serviceFacade.getServiceClient().rechercherParNom("login", infoSession.getLogin()).get(0);
//        System.out.println("client=" + client.getNom());
//        commande.setClient(client);
//        commande.setProduitSelectionnes(infoSession.getPanier().getProduitSelectionnes());
//        System.out.println("total panier=" + infoSession.getPanier().getTotalPanier());
//        commande.setTotalCommande(infoSession.getPanier().getTotalPanier());
    }
    
    /**
     * @return the listeCommandes
     */
    public List<Commande> getListeCommandes() {

		FacesContext fc = FacesContext.getCurrentInstance();
		if(fc !=null && fc.getExternalContext()!=null){
			infoSession=(InfoSession)fc.getExternalContext().getApplicationMap().get("infoSession");
		}
		listeCommandes = serviceFacade.getServiceCommande().rechercherCommandeRestaurateur(infoSession.getIdSelRestaurant());
        return listeCommandes;
    }

    /**
     * @param paramListeCommandes the listeCommandes to set
     */
    public void setListeCommandes(List<Commande> paramListeCommandes) {
        this.listeCommandes = paramListeCommandes;
    }
    /**
     * @return the commande
     */
//    public Commande getCommande() {
//        return commande;
//    }
    /**
     * @param paramCommande
     *            the commande to set
     */
//    public void setCommande(Commande paramCommande) {
//        commande = paramCommande;
//    }
//    /**
//     * @return the creation
//     */
//    public boolean isCreation() {
//        return creation;
//    }
//    /**
//     * @param paramCreation
//     *            the creation to set
//     */
//    public void setCreation(boolean paramCreation) {
//        creation = paramCreation;
//    }
    /**
     * @return the serviceFacade
     */
    public IServiceFacade getServiceFacade() {
        return serviceFacade;
    }
    /**
     * @param paramServiceFacade the serviceFacade to set
     */
    public void setServiceFacade(IServiceFacade paramServiceFacade) {
        serviceFacade = paramServiceFacade;
    }
    /**
     * @return the infoSession
     */
    public InfoSession getInfoSession() {
        return infoSession;
    }
    /**
     * @param paramInfoSession the infoSession to set
     */
    public void setInfoSession(InfoSession paramInfoSession) {
        infoSession = paramInfoSession;
    }
    
	public String cdePriseEnCompte (){
			System.out.println("cdePriseEnCompte "+ selectedCmd);
			//System.out.println(" etat = "+ selectedCmd.getEtatCommande().getLibelle());
			EtatCommande etatCommande = serviceFacade.getServiceEtatCommande().rechercherParId(1);
			serviceFacade.getServiceCommande().envoyerJmsCommande(selectedCmd.getId(),etatCommande);
		return "SuiviCommandesR.jsf";
	}
	public String cdeEnLivraison(){
		if (selectedCmd.getEtatCommande().getId() >=2){
			return null;
		}
			System.out.println("cdeEnLivraison"+ selectedCmd);
			//System.out.println(" etat = "+ selectedCmd.getEtatCommande().getLibelle());
			EtatCommande etatCommande = serviceFacade.getServiceEtatCommande().rechercherParId(2);
			serviceFacade.getServiceCommande().envoyerJmsCommande(selectedCmd.getId(),etatCommande);
			return "SuiviCommandesR.jsf";
	}
	public String cdeLivree(){
		if (selectedCmd.getEtatCommande().getId() >=3){
			return null;
		}
			System.out.println("cdeLivree"+ selectedCmd);
			//System.out.println(" etat = "+ selectedCmd.getEtatCommande().getLibelle());
			EtatCommande etatCommande = serviceFacade.getServiceEtatCommande().rechercherParId(3);
			serviceFacade.getServiceCommande().envoyerJmsCommande(selectedCmd.getId(),etatCommande);
			return "SuiviCommandesR.jsf";
	}

	public Commande getSelectedCmd() {
		return selectedCmd;
	}

	public void setSelectedCmd(Commande selectedCmd) {
		this.selectedCmd = selectedCmd;
	}


}
